package com.yc.springmvc.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

@Controller
public class ParamDo {

    @RequestMapping("pv/{p1}/{p2}")
    @ResponseBody  //@ResponseBody 则负责将方法返回值转成JSON格式数据
    public String pathVariable(
            @PathVariable String p1,  //用于定义地址参数映射
            @PathVariable("p2") String p3

    ){
        return p1 + " : " + p3;
    }



    @RequestMapping("headers")
    @ResponseBody
    public String headers(
            @RequestHeader String Host,   //表示从请求头中获取名为"Host"的信息，并将其赋值给变量Host
            @RequestHeader("Cookie") String accept   //表示从请求头中获取名为"Accept"的信息，并将其赋值给变量accept

    ){
        return Host + " ::  " + accept;

    }


    @RequestMapping("cookie")
    @ResponseBody
    public String cookie(@CookieValue String name){   //表示从请求的cookie中获取名为"name"的值，并将其赋值给变量name
        return name;
    }

    @RequestMapping(path = "save",
            produces = "text/html;charset=utf-8")
    @ResponseBody
    public String saveSession(
        String name,
        String value,
        HttpSession session
    ){
        session.setAttribute(name,value); //将参数name和value保存到会话中
        return "保存数据到会话中了";
    }


    @RequestMapping(path = "load",
                produces =  "text/html;charset=utf-8")
    @ResponseBody
    public String loadSession(
            @SessionAttribute(required = false) String myname  //注解获取会话属性，这里是获取名为"myname"的属性值，required = false表示如果不存在该属性也不会报错
                                                                //理解： 从session中获取 名为：“myname” 对应的属性值  注入到方法参数中
    ){
        return myname ==null ? "没有myname":myname;
    }




}
